package com.wgy.day36常见的函数式接口.Supplier接口;

import java.util.function.Supplier;

/**
 * Created by pc on 2020/12/10 20:59
 * Description: LearningJava
 */
/*
求数组元素最大值
要求:使用Supplier接口作为方法参数类型,通过Lambda表达式求出int数组中的最大值
注意:接口的泛型要使用包装类Integer
*/
public class Demo02Supplier {

    public static int getMax(Supplier<Integer> sup){
        return sup.get();
    }

    public static void main(String[] args) {
        //定义一个int类型的数组,并赋值
        int[] arr={10,599,0,30,-29,47,68,-99};

        //调用getMax方法,方法的参数是一个函数式接口,所以可以传递Lambda表达式
        int max = getMax(() -> {
            //定义一个变量,把数组中的第一个元素赋值给改变量,记录数组中的最大值
            int m=arr[0];
            //遍历数组,获取数组中的其他元素
            for (int i : arr) {
                //使用其他元素和最大值比较
                if(i>m){
                    //如果数组中的元素大于最大值,将此元素赋值给最大值
                    m=i;
                }
            }
            //返回最大值
            return m;
        });

        System.out.println("数组中最大值是"+max);

    }


}
